//package compile.lesson4;
//
//import java.util.Arrays;
//import java.util.Scanner;
//
//public class LR0Parser {
//
//    private static final int MAXN = 100 + 5;
//    private static char str[][]=new char[10][10]; // 输入产生式
//    private static int n; // 产生式的数量
//    static int v=0;//存储生成项的个数
//    static char r[][]=new char[20][10];//存储分析表的float值
//    static int rr[][]=new int[20][10];//存储分析表的int值
//
//    DFA[] LR=new DFA[20];
//
//    void init(){
//        int i,j;
//        Scanner scanner=new Scanner(System.in);
//        System.out.println("输入上下文无关文法");
//        for(i=1;;++i){
//            String s=scanner.nextLine();
//            str[i]=s.toCharArray();
//            if(str[i][0]=='#'){
//                break;
//            }
//        }
//
//    }
//
//    void input(){
//        int i,j;
//        str[0]="Z->E".toCharArray();
//        str[1]="E->aA".toCharArray();
//        str[2]="E->bB".toCharArray();
//        str[3]="A->cA".toCharArray();
//        str[4]="A->d".toCharArray();
//        str[5]="B->cB".toCharArray();
//        str[6]="B->d ".toCharArray();
//        n=7;
//        System.out.println("输入的文法如下：");
//        for(i=0;i<n;++i){
//            System.out.println(str[i]);
//        }
//    }
//
//    void AddD(int a,int b){
//        int i,j = 0;
//        char c[]=new char[10];
//        for(i=0;i<3;++i){
//            c[j++]=LR[a].ss[b][i];
//            c[3]='.';
//            j++;
//            for(i=3;i<LR[a].ss[b].length;++i){
//                c[j++]=LR[a].ss[b][i];
//            }
//            Arrays.fill(LR[a].ss[b],'0');
//            for(i=0;i<j;i++){
//                LR[a].ss[b][i]=c[i];
//            }
//
//        }
//    }
//    public static void main(String[] args) {
//
//    }
//}
//
//class DFA{
//    int num;//记录生成项的序号
//    int c[]=new int[10];//存储该项的上一项位置
//    int f;//记录
//    char ss[][]=new char[10][10];//存储该项的文法
//    int count;//记录该项的文法行数
//    int l;//存储第一行字符串'.'的位置
//
//}